package cn.iocoder.yudao.module.eval.dal.dataobject.score;

import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 成绩汇总 DO
 *
 * @author 芋道源码
 */
@TableName("eval_score_summaries")
@KeySequence("eval_score_summaries_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EvalScoreSummaryDO extends TenantBaseDO {

    /**
     * 主键ID
     */
    @TableId
    private Long id;
    
    /**
     * 计划ID，关联eval_plans表
     */
    private Long planId;
    
    /**
     * 考生ID，关联system_users表
     */
    private Long candidateId;
    
    /**
     * 申报等级
     */
    private String appliedLevel;
    
    /**
     * 分科目成绩，JSON格式
     */
    private String subjectScores;
    
    /**
     * 总成绩
     */
    private BigDecimal totalScore;
    
    /**
     * 加权成绩
     */
    private BigDecimal weightedScore;
    
    /**
     * 等级评定：优秀，良好，合格，不合格
     */
    private String gradeLevel;
    
    /**
     * 评定结果：0-不合格，1-合格
     */
    private Integer evaluationResult;
    
    /**
     * 计算方式：weighted_average-加权平均，simple_average-简单平均
     */
    private String calculationMethod;
    
    /**
     * 计算规则配置，JSON格式
     */
    private String calculationRules;
    
    /**
     * 计算时间
     */
    private LocalDateTime calculationTime;
    
    /**
     * 是否最终成绩
     */
    private Boolean isFinal;
    
    /**
     * 复核人ID，关联system_users表
     */
    private Long reviewerId;
    
    /**
     * 复核时间
     */
    private LocalDateTime reviewTime;
    
    /**
     * 复核状态：0-未复核，1-复核通过，2-复核不通过
     */
    private Integer reviewStatus;
    
    /**
     * 复核意见
     */
    private String reviewComments;
    
    /**
     * 异议次数
     */
    private Integer objectionCount;

}
